<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>重复请求问题</title>
  </head>
  <body>
    <button>点击发送</button>
    <button>点击取消</button>
    <script>
      //获取元素对象
      const btns = document.querySelectorAll('button')
      let x = null
      // 标识变量
      let isSending = false // 是否发送AJAX请求

      btns[0].onclick = function () {
        //   利用isSending判断
        if (isSending) x.abort() // 如果正在发送，则取消该请求，创建一个新的请求
        x = new XMLHttpRequest()
        // 修改 标识变量 请求开始为true
        isSending = true
        x.open('GET', 'http://127.0.0.1:8000/delay')
        x.send()
        x.onreadystatechange = function () {
          if (x.readyState === 4) {
            // 修改标识量
            isSending = false
          }
        }
      }

      // abort
      btns[1].onclick = function () {
        x.abort()
      }
    </script>
  </body>
</html>
